$(function(){
    $("#allbg").hide();
    $("#addGroupDialog").dialog(
        {
            autoOpen: false,
            modal: true,
            height: 230,
            width: 360,
            zIndex: 10,
            buttons: {
                '确认': function () {
                    if(!validate()){
                        return;
                    }
                    var data = {};
                    data.id = parseInt($("#classify_id").val().trim());
                    data.classifyname = $("#classify_name").val();
                    data.articles = [];
                    data.sort = 0;
                    data.state = 1;
                    allClassify.push(data);
                    $("#classifyName").append("<li class='ui_state_default' id='" + data.id + "' sort='" + data.sort + "'>" + data.classifyname + "</li>");
                    check("last");
                    $(this).dialog("close");
                }},
            Cancle:function(){
                $(this).dialog("close");
            }
        });

    // 鼠标经过已组合框就把组合项装进paraGroups里
    $("#chooseItems").hover(
        function(){},
        function()
        {
            var classifyId;
            var childIds = [];
            var noChildIds = [];

            $("#classifyName li").each(function()
            {
                if ($(this).hasClass("checkedColor"))
                {
                    classifyId = $(this).attr("id");
                }
            });

            $("#chooseItems").children().each(function()
            {
                if ($(this).attr("id"))
                {
                    childIds.push(newObj($(this).attr("id"),$(this).attr("title")));
                }
            });

            $("#noChooseItems").children().each(function()
            {
                if ($(this).attr("id"))
                {
                    noChildIds.push(newObj($(this).attr("id"),$(this).attr("title")));
                }
            });

            for ( var i = 0; i < allClassify.length; i++)
            {
                if (classifyId == allClassify[i].id)
                {
                    allClassify[i].articles = childIds;
                }
            }

            allClassify[0].articles = noChildIds;
        });
    //总的分类
    $.each(allClassify,function(index,data){
        if(index > 0) {
            $("#classifyName").append("<li class='ui_state_default' id='" + data.id + "' sort='" + data.sort + "'>" + data.classifyname + "</li>")
        }
    });

    //默认分类的文章
    $.each(defualt_articles,function(index,data){
        $("#noChooseItems").append("<li class='cell_lable' title='"+data.title+"' id='" + data.id + "'>" + data.title + "</li>");
    });

    // 鼠标选中效果
    $("#classifyName").on('mousedown','li',function()
    {
        check('mouseCheck', this);
    });

    // 页面初始化默认选中第一个
    check('first');

    //记录发生拖拽后被选中元素的下标
    var selin = -1;
    var selin2 = -1;
    // JQuery ui 的sortable功能,它能够拖拽排列的元素
    $(".sortableUl").sortable({
        cursor : "move",
        connectWith : ".connectUl",
        cancel:".templi",
        // 拖拽元素的占位框
        placeholder : "placeholderhelper",
        items: "ul>li",
        helper: function (e, item) {
            var selected = $('.ui-selected').clone();
            item.data('multidrag', selected);
            $('.ui-selected').not(item).remove();
            return $('<li class="transporter" />').append(selected);
        },
        //排序停止时触发
        stop: function (e, ui) {
            var selected = ui.item.data('multidrag');
            ui.item.after(selected);
            ui.item.remove();

            //排序完成后获得选中元素的位置
            if($("#chooseItems").find(".ui-selected").length > 0){
                selin = selected.eq(0).index();
            }

            if($("#noChooseItems").find(".ui-selected").length > 0){
                selin2 = selected.eq(0).index();
            }

            //清除占位元素
            clearItem($("#chooseItems"));
            clearItem($("#noChooseItems"));
        }
    });

    //监控选择框为空时添加一个站位元素，若无站位元素则无法放置
    setInterval(function(){
        if($("#chooseItems").children().length == 0){
            $("#chooseItems").append("<li class='templi'></li>");
        }

        if($("#noChooseItems").children().length == 0){
            $("#noChooseItems").append("<li class='templi'></li>");
        }

        clearItem($("#chooseItems"));
        clearItem($("#noChooseItems"));
    },1000);

    //记录被选择的前一个
    var prein = -1;
    var prein2 = -1;
    $(document).on("mousedown",".sortableUl li",function(e){
        if($(this).parent().is("#chooseItems")){
            $("#noChooseItems").find(".ui-selected").removeClass("ui-selected");
            prein2 = -1;
            if(e.ctrlKey){
                prein = $(this).index();
                $(this).addClass("ui-selected");
            }else if (e.shiftKey){
                var curin = $(this).addClass("ui-selected").index();
                if(prein == -1){
                    prein = curin;
                }

                if(selin != -1){
                    prein = selin;
                    selin = -1;
                }

                $("#chooseItems").find(".ui-selected").removeClass("ui-selected");
                if(curin > prein){
                    for(var i = prein; i <= curin; i++){
                        $("#chooseItems li").eq(i).addClass("ui-selected");
                    }
                }else if (curin < prein){
                    for( var i = curin; i<= prein; i++){
                        $("#chooseItems li").eq(i).addClass("ui-selected");
                    }
                }else{
                    $(this).addClass("ui-selected");
                }
            }else {
                prein = $(this).index();
                if(!$(this).hasClass("ui-selected")){
                    $(".sortableUl ul").find(".ui-selected").removeClass("ui-selected");
                    $(this).addClass("ui-selected");
                }
            }
        }else{
            $("#chooseItems").find(".ui-selected").removeClass("ui-selected");
            prein = -1;
            if(e.ctrlKey){
                prein2 = $(this).index();
                $(this).addClass("ui-selected");
            }else if (e.shiftKey){
                var curin = $(this).addClass("ui-selected").index();
                if(prein2 == -1){
                    prein2 = curin;
                }

                if(selin2 != -1){
                    prein2 = selin2;
                    selin2 = -1;
                }

                $("#noChooseItems").find(".ui-selected").removeClass("ui-selected");
                if(curin > prein2){
                    for(var i = prein2; i <= curin; i++){
                        $("#noChooseItems li").eq(i).addClass("ui-selected");
                    }
                }else if (curin < prein2){
                    for( var i = curin; i<= prein2; i++){
                        $("#noChooseItems li").eq(i).addClass("ui-selected");
                    }
                }else{
                    $(this).addClass("ui-selected");
                }
            }else {
                prein2 = $(this).index();
                if(!$(this).hasClass("ui-selected")){
                    $(".sortableUl ul").find(".ui-selected").removeClass("ui-selected");
                    $(this).addClass("ui-selected");
                }
            }
        }
        selin = -1;
        selin2 = -1;
    });

    $("#classifyName").sortable({
        cursor : "n-resize",
        placeholder : "placeholderhelper",
        axis : "y"
    });

});

function clearItem(obj){
    if(obj.children().length > 1)
        obj.find(".templi").remove();
}

// 利用arguments模拟重载
function check()
{
    var array = [];
    var item;
    var classifyId;

    $("#classifyName li").removeClass(function()
    {
        return "checkedColor";
    });

    if (arguments.length == 1)
    {
        if (arguments[0] == 'first')
        {
            item = $("#classifyName li").first();
        }
        else if (arguments[0] == 'last')
        {
            item = $("#classifyName li").last();
        }
    }
    else if (arguments.length == 2)
    {
        if (arguments[0] == 'mouseCheck' || arguments[0] == 'del')
        {
            item = $(arguments[1]);
        }
    }

    item.addClass("checkedColor");
    classifyId = item.attr("id");

    $("#chooseItems").children().remove();

    for ( var i = 0; i < allClassify.length; i++)
    {
        if (allClassify[i].id == classifyId)
        {
            array = allClassify[i].articles;
        }
    }

    for ( var i = 0; i < array.length; i++)
    {
        $("#chooseItems").append("<li class='ui_state_default' title='"+array[i].title+"' id='" + array[i].id + "'>" + array[i].title + "</li>");
    }
}

//js实例化新的对象
function newObj(id,title)
{
    var obj = new Object();
    obj.id = id;
    obj.title = title;
    return obj;
}

function save(){
    $("body").prepend($("#allbg").show());

    var newclz = [allClassify[0]];
    $("#classifyName li").each(function(index,data){
        $.each(allClassify,function(n,e){
            if($(data).attr("id") == e.id){
                e.sort = index + 1;
                newclz.push(e);
            }
        });
    });

    allClassify = newclz;
   var newClassify = JSON.stringify(allClassify);

    $.ajax({
        type: "post",
        url: "/article/classify_update",
        data:
        {
            "newClassify" : newClassify
        },
        dataType : "json",
        success : function(n)
        {
            $("#allbg").hide();
            if(n.msg){
                alert(n.msg);
            }else{
                alert("保存成功");
            }
        }
    });
}

function del(){
    if(!confirm("您确认要删除?")) {
        return;
    }

    var array = [];
    $("#classifyName li").each(function (n, e) {
        if ($(e).hasClass("checkedColor")) {
            $("#chooseItems").children().remove();
            for ( var i = 0; i < allClassify.length; i++)
            {
                if (allClassify[i].id == $(e).attr("id"))
                {
                    array = allClassify[i].articles;
                    allClassify[i].articles = [];
                }
            }

            $(e).remove();
            $.each(array,function(index,data){
                $("#noChooseItems").append("<li class='cell_lable' title='"+data.title+"' id='" + data.id + "'>" + data.title + "</li>");
            });
        }
    });
    check("first");
}

function add(){
    $("#classify_id").val(getMaxId()+1);
    $("#classify_name").val("");
    $("#addGroupDialog").dialog("open");
}

//获得最大的ID
function getMaxId(){
    var array = [];
    $.each(allClassify,function(index,data){
        array.push(data.id);
    });

    var maxid = array[0];
    for(var i = 0;i< array.length - 1; i++){
        if(array[i] >= array[i+1]){
            maxid = array[i];
            array[i+1] = maxid;
        }else{
            maxid = array[i+1];
        }
    }
    return maxid;
}

//验证dialog
function validate(){
    var array = [];
    var arrayName = [];
    $.each(allClassify,function(index,data){
        array.push(parseInt(data.id));
        arrayName.push(data.classifyname);
    });

    if($.inArray(parseInt($("#classify_id").val().trim()),array) > 0 ){
        return false;
    }

    if($.inArray($("#classify_name").val().trim(),arrayName) > 0 ){
        return false;
    }

    if($("#classify_id").val().trim().length == 0){
        return false;
    }

    if($("#classify_name").val().trim().length == 0){
        return false;
    }

    return true;
}